home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1990-02-02 | 1.2 KB | 72 lines |
- IMPLEMENTATION MODULE BitStuff;
-
- VAR a,b,c : INTEGER;
-
- PROCEDURE BitAnd(a,b : INTEGER) : INTEGER;
-
- VAR as,bs,cs : BITSET;
- c : INTEGER;
-
- BEGIN
- as := VAL(BITSET,a);
- bs := VAL(BITSET,b);
- cs := as * bs;
- c := VAL(INTEGER,cs);
- RETURN c;
- END BitAnd;
-
- PROCEDURE BitOr(a,b : INTEGER) : INTEGER;
-
- VAR as,bs,cs : BITSET;
- c : INTEGER;
-
- BEGIN
- as := VAL(BITSET,a);
- bs := VAL(BITSET,b);
- cs := as + bs;
- c := VAL(INTEGER,cs);
- RETURN c;
- END BitOr;
-
- PROCEDURE BitXor(a,b : INTEGER) : INTEGER;
-
- VAR as,bs,cs : BITSET;
- c : INTEGER;
-
- BEGIN
- as := VAL(BITSET,a);
- bs := VAL(BITSET,b);
- cs := as / bs;
- c := VAL(INTEGER,cs);
- RETURN c;
- END BitXor;
-
- PROCEDURE SetBit(bit : INTEGER;
- VAR field : INTEGER);
-
- BEGIN
- field := BitOr(bit,field);
- END SetBit;
-
- PROCEDURE ClearBit(bit : INTEGER;
- VAR field : INTEGER);
-
- BEGIN
- field := BitXor(bit,field);
- END ClearBit;
-
- PROCEDURE TestBit(bit,field : INTEGER) : BOOLEAN;
-
- VAR result : INTEGER;
-
- BEGIN
- result := BitAnd(bit,field);
- IF result = 0 THEN
- RETURN FALSE;
- ELSE
- RETURN TRUE;
- END;
- END TestBit;
-
- END BitStuff.
-